From 3aca223127966196f412ddeba3736c2f2beeecf1 Mon Sep 17 00:00:00 2001 From: "mjw@wray-m-3.hpl.hp.com" Date: Thu, 24 Mar 2005 21:24:38 +0000 Subject: [PATCH] bitkeeper revision 1.1159.258.64 (42433016pzi5kr8wggkPTZcHlxXCpg) Back out changes to netif backend messaging to set vifname. Try using 'ip link' instead. Signed-off-by: Mike Wray --- .../drivers/xen/netback/interface.c | 6 +----- tools/python/xen/lowlevel/xu/xu.c | 2 -- tools/python/xen/xend/Vifctl.py | 13 +++++++++++++ tools/python/xen/xend/server/netif.py | 9 +++++++-- xen/include/public/io/domain_controller.h | 5 ++--- 5 files changed, 23 insertions(+), 12 deletions(-) diff --git a/linux-2.6.11-xen-sparse/drivers/xen/netback/interface.c b/linux-2.6.11-xen-sparse/drivers/xen/netback/interface.c index f54dd0ad9c..1d1a5923c4 100644 --- a/linux-2.6.11-xen-sparse/drivers/xen/netback/interface.c +++ b/linux-2.6.11-xen-sparse/drivers/xen/netback/interface.c @@ -121,11 +121,7 @@ void netif_create(netif_be_create_t *create) netif_t **pnetif, *netif; char name[IFNAMSIZ] = {}; - if(create->vifname[0] == '\0'){ - snprintf(name, IFNAMSIZ - 1, "vif%u.%u", domid, handle); - } else { - snprintf(name, IFNAMSIZ - 1, "%s", create->vifname); - } + snprintf(name, IFNAMSIZ - 1, "vif%u.%u", domid, handle); dev = alloc_netdev(sizeof(netif_t), name, ether_setup); if ( dev == NULL ) { diff --git a/tools/python/xen/lowlevel/xu/xu.c b/tools/python/xen/lowlevel/xu/xu.c index 3f32cadc34..2c3ee6b33f 100644 --- a/tools/python/xen/lowlevel/xu/xu.c +++ b/tools/python/xen/lowlevel/xu/xu.c @@ -480,7 +480,6 @@ static PyObject *xu_message_get_payload(PyObject *self, PyObject *args) C2P(netif_be_create_t, domid, Int, Long); C2P(netif_be_create_t, netif_handle, Int, Long); C2P(netif_be_create_t, status, Int, Long); - C2P(netif_be_create_t, vifname, String, String); return dict; case TYPE(CMSG_NETIF_BE, CMSG_NETIF_BE_DESTROY): C2P(netif_be_destroy_t, domid, Int, Long); @@ -648,7 +647,6 @@ static PyObject *xu_message_new(PyObject *self, PyObject *args) P2C(netif_be_create_t, mac[3], u8); P2C(netif_be_create_t, mac[4], u8); P2C(netif_be_create_t, mac[5], u8); - P2CSTRING(netif_be_create_t, vifname); break; case TYPE(CMSG_NETIF_BE, CMSG_NETIF_BE_DESTROY): P2C(netif_be_destroy_t, domid, u32); diff --git a/tools/python/xen/xend/Vifctl.py b/tools/python/xen/xend/Vifctl.py index 86f68db0b4..bfc750315a 100644 --- a/tools/python/xen/xend/Vifctl.py +++ b/tools/python/xen/xend/Vifctl.py @@ -37,6 +37,19 @@ def network(op, script=None, bridge=None, antispoof=None): args = ' '.join(args) os.system(script + ' ' + args) +def set_vif_name(vif_old, vif_new): + if vif_old == vif_new: + vif = view_new + if os.system("ip link show %s" % vif_old) == 0: + os.system("ip link set %s down" % vif_old) + os.system("ip link set %s name %s" % (vif_old, vif_new)) + os.system("ip link set %s up" % vif_new) + if os.system("ip link show %s" % vif_new) == 0: + vif = vif_new + else: + vif = vif_old + return vif + def vifctl(op, vif=None, script=None, domain=None, mac=None, bridge=None, ipaddr=[]): """Call a vif control script. Xend calls this when bringing vifs up or down. diff --git a/tools/python/xen/xend/server/netif.py b/tools/python/xen/xend/server/netif.py index 5afb3df388..5d3ef5a18d 100755 --- a/tools/python/xen/xend/server/netif.py +++ b/tools/python/xen/xend/server/netif.py @@ -134,7 +134,7 @@ class NetDev(controller.SplitDev): self.vifname = sxp.child_value(config, 'vifname') if self.vifname is None: - self.vifname = "vif%d.%d" % (self.controller.dom, self.vif) + self.vifname = self.default_vifname() if len(self.vifname) > 15: raise XendError('invalid vifname: too long: ' + self.vifname) mac = self._get_config_mac(config) @@ -217,6 +217,9 @@ class NetDev(controller.SplitDev): """ return self.vifname + def default_vifname(self): + return "vif%d.%d" % (self.controller.dom, self.vif) + def get_mac(self): """Get the MAC address as a string. """ @@ -248,6 +251,8 @@ class NetDev(controller.SplitDev): @param op: operation name (up, down) @param vmname: vmname """ + if op == 'up': + Vifctl.set_vif_name(self.default_vifname(), self.vifname) Vifctl.vifctl(op, **self.vifctl_params(vmname=vmname)) vnet = XendVnet.instance().vnet_of_bridge(self.bridge) if vnet: @@ -276,7 +281,7 @@ class NetDev(controller.SplitDev): { 'domid' : self.controller.dom, 'netif_handle' : self.vif, 'mac' : self.mac, - 'vifname' : self.vifname + #'vifname' : self.vifname }) self.getBackendInterface().writeRequest(msg, response=d) return d diff --git a/xen/include/public/io/domain_controller.h b/xen/include/public/io/domain_controller.h index b42510d688..c3494e34ca 100644 --- a/xen/include/public/io/domain_controller.h +++ b/xen/include/public/io/domain_controller.h @@ -466,10 +466,9 @@ typedef struct { u32 netif_handle; /* 4: Domain-specific interface handle. */ u8 mac[6]; /* 8 */ u16 __pad1; /* 14 */ - char vifname[16]; /* 16 */ /* OUT */ - u32 status; /* 32 */ -} PACKED netif_be_create_t; /* 36 bytes */ + u32 status; /* 16 */ +} PACKED netif_be_create_t; /* 20 bytes */ /* * CMSG_NETIF_BE_DESTROY: -- 2.30.2